A semiconductor memory device can be volatile (hereinafter, referred to as a volatile memory device) or nonvolatile (hereinafter, referred to as a nonvolatile memory device). A nonvolatile memory device retains contents stored therein even at power-off. Data stored in the nonvolatile memory device is permanent or reprogrammed according to the fabrication technology used. Nonvolatile memory devices are used for program and microcode storage in a wide variety of applications in the computer, avionics, telecommunications, and consumer electronics industries.